/*!
 *  \file       ProbabilityDistribution.hpp
 *  \brief      Definizione dell'interfaccia \c ProbabilityDistribution
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author	Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 */

#ifndef _PROBABILITY_DISTRIBUTION_H
#define _PROBABILITY_DISTRIBUTION_H


/*!
 *  \brief      Definizione della classe \c ProbabilityDistribution
 */
template< typename tType, template< typename > class tDistribution, typename rType = long double >
class ProbabilityDistribution : public std::vector< tType >
{
  public :
    ProbabilityDistribution( ProbabilityDistribution const& );
    ProbabilityDistribution( const unsigned long int, tDistribution< tType > );
    
    virtual ProbabilityDistribution& operator=( const ProbabilityDistribution& );
    
    virtual rType mean( void );
    virtual rType variance( void );
    virtual rType stDeviation( void );
    
  protected :
    tDistribution< tType > random_;
};

#endif              /* _PROBABILITY_DISTRIBUTION_H */
